ANOVA在手,多组比较不犯愁 | 协和八
小编按:用尽洪荒之力终于搞定了 t 检验,但是实战中只掌握这一个武器可不行!接下来就让我们一起愉快地学习 ANOVA 吧~
▲▼▲▼
之前的几个月里,我们一直在用 t 检验比较两组数据的平均值这个问题上兜兜转转。直到上一集《要比较三组数据,t 检验还能用吗?》,我们终于迈出了重要的一步,从两组来到了三组!
这时也许你的内心受到了 0.05 点伤害:哼哼, 比较两组讲了十集,三组再讲十集,然后四组、五组……这样学统计,真是鬼才知道我们会经历什么啊!
一个会让你稍感宽慰的消息是,其实三组和三组以上在本质上没有太大的区别,都可以用相同的办法搞定。
在上一集里,相信我们已经说服了大家,如果用多个 t 检验两两比较三组数据的平均值,就会产生「多重检验」(multiple comparison)问题,使得我们更可能把没有显著性的差别误以为是显著的(也就是增加犯第一类错误的可能性)。
那么不止三组的时候呢?这个问题同样存在,而且随着组数的增加,多重检验的问题会越来越严重(想想看为什么?)。而能一揽子解决这个问题的最流行的方法,就是我们上一集提到过的方差分析(Analysis of Variance),简称 ANOVA。
ANOVA 这个方法,是我们的老熟人、频率学派统计学的代表人物 R. A. Fisher 费希尔老爷子的成名作,发表于 1918 年。虽然到现在只有不到一百年的历史,但因其简明清晰而席卷了包括医学、社会科学、工业应用等各个研究领域。
一位智者曾经说过(咳咳,捂脸承认这是我说的),不会用 ANOVA ,还好意思在科研圈混?为了继续在知识的海洋里上(yu)下(kuai)求(wan)索(shua),今天这一集就让我们一起来解剖一下 ANOVA 这门必备技能里头都有些什么道道。
▼▲▼▲
要解释 ANOVA 的原理,我们还得从它的名字开始。既然它的名字叫方差分析,那么一定就和方差(variance)有点关系了。在许久以前的《数据到手了,第一件事该干啥》,我们提到过样本方差(sample variance),它是描述一个连续型变量样本中各数据点偏离它们均值的程度的统计量,公式是:
其中 n 为样本中数据点的数量,
为什么方差能够表示数据点的发散程度呢?在这个式子里,分母只是一个常数,在这里我们不妨暂时先把它忽略。方差定义里重要的一块,在于分子上的,它就是先找出每个数据点和整个样本均值之差,然后把它们一一平方然后再求和。之所以要平方,是因为我们对数据点的发散程度感兴趣,如果不平方的话,大于和小于平均值的数据点偏离平均值的量就会相互抵消。我们把上述算式的分子上的这一块儿称为总平方和(total sum of squares):
这一定义看起来十分简单,似乎只是回到了我们以前讲过的随机误差(可回顾《算术平均数:简单背后有乾坤》《正态分布到底是怎么来的?》)。
的确,如果我们的样本里包含的都是没有差异的个体(也就是说样本平均值能代表这些个体的共同性质)时,总平方和大致描绘的就是每个个体的实际数据围绕它们共同性质所决定的理论平均值的波动程度。然而,如果样本里包含了两组或者更多组性质不同的个体,事情就不那么简单了。
可以看到,来自格格巫和康师傅的数据点混杂在一起,直观上看不出什么区别。如果我们不把他们俩制作的包子用不同颜色标出,我们就会倾向于认为这些数据点来自于同一个总体,而且大约围绕 50 克左右的平均值上下波动。
的确,如果我们把包子按照是谁做的分成两组,单独求出两组的重量平均值,会发现它们非常接近。如果我们用独立样本 t 检验来对两者做比较,也不会得到有显著性的结果。在这一个例子里,样本的总平方和基本上就会反映两组包子所构成的共同总体的波动情况。
你一定能一眼看出它和上一个例子的区别——尽管这些包子都来自同一个食堂,因而被我们放到了同一个样本里头,但是我们很容易能看到,这个样本其实包含了两类包子。
第一类是蓝色代表的格格巫的包子,它们的平均值大概在 45 克左右,而第二类是红色代表的业界良心康师傅的包子,其平均值大概在 55 克左右。如果把两组数据做个 t 检验,毫无疑问结果将会非常显著。但如果我们不论出处,那么把它们混在一起计算整个样本的平均重量仍然大约是 50 克。
这样一来,尽管我们可以还用之前的公式计算这个样本的总平方和,但是可以想象,这个总平方和里面其实包含了两个性质不同的部分。回想一下,计算总平方和,我们对每个数据点先求出它和样本平均值之差
▲▼▲▼
因此,要考虑不同因素对总平方和的贡献,我们需要进一步把总平方和给分成不同的成分。既然我们现在考虑的是组别和均值之间的关系,那么总平方和就可以分成「组间平方和」(between-group sum of squares)和「组内平方和」(within-group sum of squares)两个部分。顾名思义,组间平方和对应的是各组的平均值之间的差别,而组内平方和则是各数据点与自己所在组的平均值之间的差别。
在上面的两个图中,组间平方和大致对应于红、蓝两团数据点之间的距离,而组内平方和对应于红、蓝两组数据各自有多分散。组间、组内平方和具体的公式稍稍有些繁琐,我们先按下不表,在后面的例子里会为大家具体展示。
回顾一下前面的两个例子,试想一下两个样本的组间平方和、组内平方和与总平方和之间的关系会有什么不同?
不用具体计算,相信也能想到,在第一个样本里,由于两组各自的平均值就很接近,它们和整个样本的平均值自然就没有什么区别,因而组间平方和就会很小,总平方和里头大部分都是组内平方和。
第二个样本呢?情况恰恰相反。因为两组包子各自的平均重量就相去甚远,所以组间平方和贡献了大部分的总平方和,而组内平方和就只是小头了。
从这里我们是否能得到一点启示——怎样利用组间平方和、组内平方和、总平方和之间的关系来判断各组平均值之间是否有差异?答案就在于总平方和是如何分配的。
记住,我们的原假设是各组平均值之间没有差异。在原假设成立的情况下,组间平方和应该相对较小。如果组间平方和大,组内平方和小,原假设成立的可能性就小,也就是说各组平均值之间更可能存在差异;如果组间平方和小,组内平方和大,则代表现有数据还不足以推翻原假设。
这个思路恰恰就是 ANOVA 的基本原理!把它弄懂,我们就已经领会了费希尔当年发明 ANOVA 的思想精髓,剩下的就只是技术上的细节了。值得强调的是,虽然我们引出这个思路用的例子里面只有两个组,但是它与分组的数量并没有关系——无论我们有几个组,都可以按照前面的定义算出组间平方和与组内平方和,然后将它们进行比较。因此,ANOVA 可以用于任意的多组数据平均值间的比较。
▲▼▲▼
为了让大家进一步掌握 ANOVA 的计算,下面我们来看一个有具体数字和运算的示例。
现在让我们把王师傅请回来,假设蓝精灵分别在格格巫、康师傅、王师傅三人的包子窗口随机抽取几个包子,得到了下列数据:
包子师傅 | 格格巫 | 康师傅 | 王师傅 |
包子重量 (克) | 50 | 53 | 55 |
45 | 53 | 53 | |
48 | 56 | 50 | |
44 | 55 | 51 | |
43 | 54 | 56 | |
50 | 57 | 48 |
怎样用 ANOVA 的思路来判断三个包子师傅卖出的包子平均重量有没有差别?
首先,我们来计算总平方和。把三组数据混在一起,取算术平均值,得到 51.2 克。因此总平方和就是各数据点分别减去 51.2(以下略去单位)再平方,然后把所有这些平方加起来:
接下来我们要分别计算组间和组内平方和,而两者都需要先知道各组组内的平均值——格格巫、康师傅、王师傅各自的 6 个包子的平均重量分别是 46.7,54.7,52.2(格格巫又是你!!)。
根据组间平方和的定义(各组平均值与整个样本平均值之差的平方和),我们得到:
其中每个平方和前面的 6 是各组数据点的个数。为什么要乘以每组数据点的个数?因为不管是总平方和、组间平方和还是组内平方和,它们都是来自每个数据点的平方和,比如说,来自格格巫的 6 个包子虽然重量不同,但在 ANOVA 这个背景下它们拥有一个共同的性质(平均重量为 46.7 克),因此在计算组间平方和时要把
最后,我们来计算组内平方和——相当于把各组自己当成一个小「总体」,算出「总平方和」,然后再加起来,也就是
算术做完了,你有没有发现一点什么? 如果我们把组间平方和 201 和组内平方和 107.4 相加,就会得到总平方和(308.5,这里略有一些偏差是因为计算过程中的四舍五入导致的)。
这并不是巧合,在理论上可以证明总平方和就是组间平方和、组内平方和两者之和。换言之,在 ANOVA 这个模型里,样本的波动情况可以被组间和组内平方和瓜分完毕,也就是说样本中数据点之间取值的不同只可能有组与组之间的差别以及组内随机误差这两种成因。
回到我们一开始想要回答的问题:这三组包子的平均重量有没有差别?比较一下组间平方和与组内平方和,容易看到组间平方和比组内平方和大了许多,从而占据了总平方和的大部分。因此,我们可以初步判断,这三组包子的平均重量相同的可能性不大。
但是,作为训练有素的科研狗,我们显然不能满足于这样模糊的判断。为了得出精确的结论,我们能不能从数据中得到一个针对于原假设「三组包子的平均重量相同」的 p 值?在下一集里,我们将继续沿着今天的思路,一起重游百年以前费希尔建立 ANOVA 方法的足迹,为大家介绍 ANOVA 背后的统计学模型以及如何确定显著性。
回复「统计学」可查看「说人话的统计学」系列合辑,
或点击下方标题可阅读本系列任意文章
>>> 干货 <<<
>>> 自检 <<<
>>> 番外篇 <<<
作者:张之昊
编辑:黑草乌叶